<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   主题：如何读取列数超多(百万个列)的一个矩阵文本？  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({elements: ["bbpress-forums"]});
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/cn/topic/7196/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466450550: Accept with keywords: (title(0.4):文本,主题,矩阵,论坛,列数, topn(0.2):功力,帖子,会员,内存,行数,文件,用户名,奔四,结果,元素,数据,向量,机器,行是,论坛,矩阵,楼主,标题,问题,普通,名称,显现出来,主题,测试数据,先用,文本文件,列数,文本,机子,讨论区).-->
 </head>
 <body class="topic bbpress single single-topic postid-7196 single-author sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    主题：如何读取列数超多(百万个列)的一个矩阵文本？
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/cn">
       <img src="http://cos.name/cn/wp-content/themes/COS-forest/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <div class="menu-%e8%8f%9c%e5%8d%951-container">
        <ul class="nav-menu" id="menu-%e8%8f%9c%e5%8d%951">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-407772" id="menu-item-407772">
          <a href="http://cos.name/cn/">
           论坛首页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407773" id="menu-item-407773">
          <a href="http://cos.name/cn/forums/">
           讨论区
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407774" id="menu-item-407774">
          <a href="http://cos.name/cn/wp-login.php?action=register">
           注册
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407819" id="menu-item-407819">
          <a href="http://cos.name/">
           主站
          </a>
         </li>
        </ul>
       </div>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-7196 topic type-topic status-publish hentry" id="post-7196">
        <header class="entry-header">
         <h1 class="entry-title">
          如何读取列数超多(百万个列)的一个矩阵文本？
         </h1>
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <div id="bbpress-forums">
          <div class="bbp-breadcrumb">
           <p>
            <a class="bbp-breadcrumb-home" href="http://cos.name/cn/">
             COS论坛 | 统计之都
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-root" href="http://cos.name/cn/forums/">
             讨论区
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-forum" href="http://cos.name/cn/forum/software/">
             软件应用
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-forum" href="http://cos.name/cn/forum/software/r-language/">
             S-Plus &amp; R语言
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <span class="bbp-breadcrumb-current">
             如何读取列数超多(百万个列)的一个矩阵文本？
            </span>
           </p>
          </div>
          <div class="bbp-template-notice info">
           <p class="bbp-topic-description">
            该主题包含 20 条回复，6个帖子，最后由
            <a class="bbp-author-avatar" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
             <img src="http://sdn.geekzu.org/avatar/3cf69793b8d5be8febd22526bae3bb10?s=14&amp;d=monsterid&amp;r=g"/>
            </a>
            <a class="bbp-author-name" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
             Rtist
            </a>
            在
            <a href="http://cos.name/cn/topic/7196/page/2/#post-230810" title="回复：如何读取列数超多(百万个列)的一个矩阵文本？">
             8 年, 10 月 之前
            </a>
            更新。
           </p>
          </div>
          <div class="bbp-pagination">
           <div class="bbp-pagination-count">
            查看 15 个帖子 - 1 到 15（总计 21 个）
           </div>
           <div class="bbp-pagination-links">
            <span class="page-numbers current">
             1
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/7196/page/2/">
             2
            </a>
            <a class="next page-numbers" href="http://cos.name/cn/topic/7196/page/2/">
             →
            </a>
           </div>
          </div>
          <ul class="forums bbp-replies" id="topic-7196-replies">
           <li class="bbp-header">
            <div class="bbp-reply-author">
             作者
            </div>
            <!-- .bbp-reply-author -->
            <div class="bbp-reply-content">
             帖子
            </div>
            <!-- .bbp-reply-content -->
           </li>
           <!-- .bbp-header -->
           <li class="bbp-body">
            <div class="bbp-reply-header" id="post-7196">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月27日 上午2:02
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-7196">
               1 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-7196 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-1 user-id-21950 topic-author post-7196 topic type-topic status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               <img src="http://sdn.geekzu.org/avatar/5f261eed9ff1241ba272ab004886fc34?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               iiiiiiiiiii
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               文本文件大概不压缩情况下有300M，压缩后70M
               <br/>
               问题是列数很多，估计有数百万个列，但行数只有13行而已
              </p>
              <p>
               文本文件中的数据格式：
               <br/>
               第1行是标题行，后面的12行是数值行，没有序号那列，列之间以tab分隔
               <br/>
               样式如：
               <br/>
               prb1 prb2 …. prbxxxxxx
               <br/>
               2.3 2.4 ….. 8.5
               <br/>
               …
               <br/>
               5.3 8.4 ….. 7
              </p>
              <p>
               我在linux，内存8G的机子上：
               <br/>
               用read.table(file="..",header=TRUE) 来读取后，很长时间没反应，读取不成功
              </p>
              <p>
               用readLines(file="")  这个读取后不知道是什么形式的，我用class()显示的是character类型
               <br/>
               我怎么转换成data.frame(或是矩阵或数组)，而且将数据转置了，然后prbxxx这些是每行的名称。
               <br/>
               即样式变成：
               <br/>
               prb1 2.3 … 5.3
               <br/>
               prb2 2.4 … 8.4
              </p>
              <p>
               prbxxxx ….
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229733">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月27日 上午9:24
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229733">
               2 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229733 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-2 user-id-21950 topic-author post-229733 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               <img src="http://sdn.geekzu.org/avatar/5f261eed9ff1241ba272ab004886fc34?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               iiiiiiiiiii
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               我试了下readLines
              </p>
              <p>
               ————————————-
               <br/>
               测试数据(第一行是标题行)，放在文件OxtTest.txt
               <br/>
               chr1.56013    chr1.56048    chr1.56088    chr1.56144
               <br/>
               4.5369    4.17434    6.40394    1
               <br/>
               5.5369    6.17434    6.40394    2
               <br/>
               4.5369    4.17434    6.40394    3
               <br/>
               ————————————-
              </p>
              <p>
               test &lt;- readLines("OxtTest.txt")
               <br/>
               writeLines(test,con="writeTest.txt")  ##写出的文件除了最后一行空白行外，其它与读入的文件一样的
               <br/>
               ##转换为data.frame，但test中的每行都被当作是一个值而已了，而不是以tab分隔开的一个矩阵形式
               <br/>
               test.frame&lt;-as.data.frame(test)
               <br/>
               ##因为上面的不对，转置也就不是我想要的结果了。
               <br/>
               t.tf&lt;-t(test.frame)
              </p>
              <p>
               ##用readLines读取后的值，原来的tab用\t取代了
               <br/>
               &gt; test
               <br/>
               [1] "chr1.56013\tchr1.56048\tchr1.56088\tchr1.56144"
               <br/>
               [2] "4.5369\t4.17434\t6.40394\t1"
               <br/>
               [3] "5.5369\t6.17434\t6.40394\t2"
               <br/>
               [4] "4.5369\t4.17434\t6.40394\t3"
               <br/>
               ##数据框后，把全部数据当作是一个数据，而不是tab分隔的了。
               <br/>
               &gt; dim(test.frame)
               <br/>
               [1] 4 1
              </p>
              <p>
               我希望实现的是：
               <br/>
               readLines读取后
               <br/>
               转换为data.frame时，首行是标题行，后面的是一个矩阵形式的
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229737">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月27日 上午10:09
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229737">
               3 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229737 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-3 user-id-1 post-229737 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               谢益辉
              </a>
              <br/>
              <div class="bbp-author-role">
               站长
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               你可以试着只读一行看机器能不能跑得动，读之前先用memory.limit()把内存的上限扩大一些。
              </p>
              <p>
               read.table(…, nrows=1, …)
              </p>
              <p>
               如果读一行没问题，那么就再用skip参数将行数依次往下移，这样就把数据都读进来了。这个过程中最可能出问题的就是内存不够。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229746">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月27日 下午12:12
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229746">
               4 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229746 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-4 user-id-21950 topic-author post-229746 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               <img src="http://sdn.geekzu.org/avatar/5f261eed9ff1241ba272ab004886fc34?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               iiiiiiiiiii
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               谢谢
              </p>
              <p>
               读之前先用memory.limit()把内存的上限扩大一些。
               <br/>
               ＝＝linux下没有这个命令， 'memory.limit()' is Windows-specific  有linux下设置内存大小的吗？
              </p>
              <p>
               TA_all &lt;- read.table(getFileName("Oxt6_Tiling_all_12_July52007.txt"), header=TRUE,nrows=1)
               <br/>
               我用这个读取后，还是读不了，等半天了也没反应。
               <br/>
               假设读取到的话，如何合并通过skip读取的这些结果呢？
              </p>
              <p>
               用readLines倒是可以读进来，不过就是不知道怎么处理结果？
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229777">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月28日 上午7:41
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229777">
               5 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229777 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-5 user-id-1 post-229777 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               谢益辉
              </a>
              <br/>
              <div class="bbp-author-role">
               站长
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               哦，忘了memory.limit()是Windows特有的函数了……
              </p>
              <p>
               读进来之后倒是也好处理，关键就是数据太大的问题。
              </p>
              <p>
               用strsplit()就可以把字符串拆开了，例如：
              </p>
              <p>
               &gt; as.numeric(unlist(strsplit("1\t2\t3", "\t", fixed=T)))   #\t的意思就是tab
               <br/>
               [1] 1 2 3
              </p>
              <p>
               你仍然一行一行地读吧，反正我觉得这种处理方法肯定也很耗费内存。如果在不行的话，就换scan试试看。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229787">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月28日 上午9:16
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229787">
               6 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229787 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-6 user-id-21950 topic-author post-229787 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               <img src="http://sdn.geekzu.org/avatar/5f261eed9ff1241ba272ab004886fc34?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/21950/" rel="nofollow" title="查看iiiiiiiiiii的档案">
               iiiiiiiiiii
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               谢谢
              </p>
              <p>
               对啊，数据量是太大了，现在我在测试数据上已经可以实现我想要的结果(虽然可能转换的方法很笨，但终究是实现了 -.-)
               <br/>
               =====================================
               <br/>
               正确测试代码
               <br/>
               =====================================
               <br/>
               ————————————-
               <br/>
               测试数据"OxtTest.txt"
               <br/>
               chr1.56013    chr1.56048    chr1.56088    chr1.56144
               <br/>
               4.5369    4.17434    6.40394    1
               <br/>
               5.5369    6.17434    6.40394    2
               <br/>
               4.5369    4.17434    6.40394    3
               <br/>
               ————————————-
               <br/>
               ##函数，取得文件名，路径自己改
               <br/>
               getFileName=function(aFileName){
               <br/>
               lPath="/home/wxh/qq_data/"   ##替换相应的路径
               <br/>
               lFileName=paste(lPath,aFileName,sep="")
               <br/>
               return (lFileName )
               <br/>
               }
               <br/>
               ##读取，每行变成向量的一个元素
               <br/>
               test &lt;- readLines(getFileName("OxtTest.txt"))
               <br/>
               ##标题行as.character
               <br/>
               test.header&lt;-as.character(unlist(strsplit(test[1], "\t", fixed=T)))
               <br/>
               ##数据部分导入到list中
               <br/>
               test.data&lt;-list()
               <br/>
               for (i in 2:length(test)) { #paste("testdata",i,sep="")=
               <br/>
               test.data[i-1]&lt;-list(as.numeric(unlist(strsplit(test
               <em class="d4pbbc-italic">
               </em>
               , "\t", fixed=T))))
               <br/>
               }
               <br/>
               ##每个样本加上名称
               <br/>
               names(test.data)&lt;-paste(c("testdata"),1:(length(test.data)),sep="")
               <br/>
               ##转换为dataframe,这样原来list的每个元素就变成了data.frame中的每列了
               <br/>
               test.data.frame&lt;-as.data.frame(test.data)
               <br/>
               ##每行加上名称(probes)
               <br/>
               rownames(test.data.frame.matrix)&lt;-test.header
               <br/>
               ##由dataframe转换为矩阵(与data.frame布局一样，已经是转置后的了)
               <br/>
               test.data.frame.matrix&lt;-as.matrix(test.data.frame)
               <br/>
               test.data.frame.matrix
               <br/>
               dim(test.data.frame.matrix)
               <br/>
               ##[1] 4 3
               <br/>
               test.data.frame.matrix
               <br/>
               ##保存结果
               <br/>
               write.table(test.data.frame,quote=FALSE,file=getFileName("frame2.txt"))
              </p>
              <p>
               可到了实际数据
               <br/>
               ##读取，每行变成向量的一个元素
               <br/>
               TA_all &lt;- readLines(getFileName("Oxt6_Tiling_all_12_July52007.txt"))
               <br/>
               ##标题行as.character  ＝＝＝
               <br/>
               TA_all.header&lt;-as.character(unlist(strsplit(TA_all[1], "\t", fixed=T)))
              </p>
              <p>
               ＝＝＝＝这里就卡住了不前行了，郁闷啊~~~~ 而且中止不了，每回都只能断开远程机子的连接(我是ssh远程操作的)，也不知道这样内存释放掉没有，我用ps -aux和top又都没再看到R的进程。
              </p>
              <p>
               在执行 ＝＝＝这句时，我用top查看使用情况%CPU %MEM 分别为99.9  0.7，好像内存也用得不多啊，CPU怎么会占那么多，奇怪，怎么结果出不来？
               <br/>
               Cpu(s): 12.5% us,  0.0% sy,  0.0% ni, 87.5% id,  0.0% wa,  0.0% hi,  0.0% si
               <br/>
               Mem:   8310560k total,  5894536k used,  2416024k free,   163268k buffers
               <br/>
               Swap:  9213268k total,        0k used,  9213268k free,  4586412k cached
               <br/>
               PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
               <br/>
               6884 root      25   0 64980  55m 2232 R 99.9  0.7   1:12.23 R
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229901">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月30日 上午10:01
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229901">
               7 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229901 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-7 user-id-1 post-229901 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               谢益辉
              </a>
              <br/>
              <div class="bbp-author-role">
               站长
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               最耗费时间的当然是strsplit这一步啊，你用小数据肯定没问题，我在我的奔四3.0GHz、512M内存的Windows上跑了一个1000000列的数据拆分，结果好半天都没能跑出来……
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229928">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月30日 下午3:39
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229928">
               8 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229928 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-8 user-id-230 post-229928 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               <img src="http://sdn.geekzu.org/avatar/3cf69793b8d5be8febd22526bae3bb10?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               Rtist
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               既然你的数据全都是numeric的，最快最方便的办法应该是直接scan。
              </p>
              <pre class="highlight ">cols=1e6;rows=12
dat=matrix(rnorm(rows*cols),rows,cols)
write.table(dat,"tmp.dat",sep="\t",ro=F)
</pre>
              <p>
               现在读进来：
              </p>
              <pre class="highlight ">&gt; header.read=scan("tmp.dat","",nlines=1)
Read 1000000 items
&gt; dat.read=scan("tmp.dat",skip=1)
Read 12000000 items
&gt; dim(dat.read)=c(cols,rows)
&gt; rownames(dat.read)=header.read
&gt; head(dat.read)
</pre>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-229943">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年7月30日 下午5:21
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-229943">
               9 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-229943 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-9 user-id-22116 post-229943 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/22116/" rel="nofollow" title="查看hexm26的档案">
               <img src="http://sdn.geekzu.org/avatar/2d9c052731bdfc1c7f4b06e84fe8d2f4?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/22116/" rel="nofollow" title="查看hexm26的档案">
               hexm26
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               哈哈，这个时候SAS的功力可以显现出来了，如果有可能，楼主用SAS试一试，说不定快的让你想象不到。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230069">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 上午7:15
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230069">
               10 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230069 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-10 user-id-6357 post-230069 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/6357/" rel="nofollow" title="查看orin的档案">
               <img src="http://sdn.geekzu.org/avatar/a842387a3bbc98b8beeb3c53056d4848?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/6357/" rel="nofollow" title="查看orin的档案">
               orin
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第6楼[i]谢益辉[/i]于[i]2007-07-30 17:01[/i]发表的“”[/b]:
                <br/>
                最耗费时间的当然是strsplit这一步啊，你用小数据肯定没问题，我在我的奔四3.0GHz、512M内存的Windows上跑了一个1000000列的数据拆分，结果好半天都没能跑出来……
               </p>
              </blockquote>
              <p>
               你应该升级内存了。。。。。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230074">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 上午8:48
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230074">
               11 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230074 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-11 user-id-3419 post-230074 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/3419/" rel="nofollow" title="查看alexru的档案">
               <img src="http://sdn.geekzu.org/avatar/5dd2ce3b2c9c5bc14b247de79266ff87?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/3419/" rel="nofollow" title="查看alexru的档案">
               alexru
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               这时侯可能考虑换个软件试试
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230079">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 上午9:42
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230079">
               12 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230079 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-12 user-id-230 post-230079 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               <img src="http://sdn.geekzu.org/avatar/3cf69793b8d5be8febd22526bae3bb10?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               Rtist
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第9楼[i]orin[/i]于[i]2007-08-01 01:15[/i]发表的“”[/b]:
               </p>
               <p>
                你应该升级内存了。。。。。
               </p>
              </blockquote>
              <p>
               是有点太小了。
              </p>
              <p>
               btw: 应该不是笔记本吧？DDR2？
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230080">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 上午9:48
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230080">
               13 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230080 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-13 user-id-230 post-230080 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               <img src="http://sdn.geekzu.org/avatar/3cf69793b8d5be8febd22526bae3bb10?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               Rtist
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第6楼[i]谢益辉[/i]于[i]2007-07-30 04:01[/i]发表的“”[/b]:
                <br/>
                最耗费时间的当然是strsplit这一步啊，你用小数据肯定没问题，我在我的奔四3.0GHz、512M内存的Windows上跑了一个1000000列的数据拆分，结果好半天都没能跑出来……
               </p>
              </blockquote>
              <p>
               does setting perl=T help?
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230086">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 上午11:40
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230086">
               14 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230086 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-14 user-id-230 post-230086 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               <img src="http://sdn.geekzu.org/avatar/3cf69793b8d5be8febd22526bae3bb10?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/230/" rel="nofollow" title="查看Rtist的档案">
               Rtist
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第8楼[i]hexm26[/i]于[i]2007-07-30 11:21[/i]发表的“”[/b]:
                <br/>
                哈哈，这个时候SAS的功力可以显现出来了，如果有可能，楼主用SAS试一试，说不定快的让你想象不到。
               </p>
              </blockquote>
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第10楼[i]alexru[/i]于[i]2007-08-01 02:48[/i]发表的“”[/b]:
                <br/>
                这时侯可能考虑换个软件试试
               </p>
              </blockquote>
              <p>
               还是用事实说话吧——在同一台机器上的测试结果：
               <br/>
               数据模拟：
              </p>
              <pre class="highlight ">cols=1e6;rows=12
dat=matrix(rnorm(rows*cols),rows,cols)
write.table(dat,"tmp.dat",sep="\t",ro=F)
</pre>
              <p>
               R code and results for reading 'tmp.dat':
              </p>
              <pre class="highlight ">&gt; system.time({
+ cols=1e6;rows=12
+ header.read=scan("tmp.dat","",nlines=1)
+ dat.read=scan("tmp.dat",skip=1)
+ dim(dat.read)=c(cols,rows)
+ rownames(dat.read)=header.read
+ dat.read=t.default(dat.read)  ## this is actually unnecessary
+ })
Read 1000000 items
Read 12000000 items
   user  system elapsed 
 38.010   2.030  40.042 
&gt; 
&gt; 
&gt; system.time({
+ cols=1e6;rows=12
+ header.read=scan("tmp.dat","",nlines=1)
+ dat.read=scan("tmp.dat",skip=1)
+ dim(dat.read)=c(cols,rows)
+ rownames(dat.read)=header.read
+ })
Read 1000000 items
Read 12000000 items
   user  system elapsed 
  36.10    1.72   37.81 

</pre>
              <p>
               SAS code: read.performance.sas
              </p>
              <pre class="highlight ">data d;
        infile 'tmp.dat' firstobs=2 delimiter='    ' RECFM=V LRECL=20000000;
        input V1-V1000000;
run;       

*proc import file='tmp.dat' dbms=tab out=d1;  ** 这个慢得让人无法忍受，就不运行了;
*run;
</pre>
              <p>
               Run SAS code:
              </p>
              <pre class="highlight ">% sas -work . -memsize 2g read.performance.sas
%
</pre>
              <p>
               SAS log的结果:
              </p>
              <pre class="highlight ">NOTE: 12 records were read from the infile 'tmp.dat'.
      The minimum record length was 18180739.
      The maximum record length was 18182624.
NOTE: The data set WORK.D has 12 observations and 1000000 variables.
NOTE: DATA statement used (Total process time):
      real time           2:17.99
      cpu time            52.45 seconds
</pre>
              <p>
               <strong class="d4pbbc-bold">
                可见，测试结果提示R在这种情况下仍然要快于SAS！
               </strong>
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-230095">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2007年8月1日 下午2:00
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/7196/#post-230095">
               15 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-230095 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-7196 bbp-reply-position-15 user-id-1 post-230095 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/1/" rel="nofollow" title="查看谢益辉的档案">
               谢益辉
              </a>
              <br/>
              <div class="bbp-author-role">
               站长
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <blockquote class="d4pbbc-quote">
               <p>
                [b]引用第9楼[i]orin[/i]于[i]2007-08-01 14:15[/i]发表的“”[/b]:
               </p>
               <p>
                你应该升级内存了。。。。。
               </p>
              </blockquote>
              <p>
               我自己的机器本来是256M内存，最近我从另外一台机器上“偷”了一根内存插上才变成512M……每当跑大数据的时候就眼巴巴看着……
              </p>
              <p>
               P.S. 试了一下，strsplit时用perl=T或F差别不大。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
           </li>
           <!-- .bbp-body -->
           <li class="bbp-footer">
            <div class="bbp-reply-author">
             作者
            </div>
            <div class="bbp-reply-content">
             帖子
            </div>
            <!-- .bbp-reply-content -->
           </li>
           <!-- .bbp-footer -->
          </ul>
          <!-- #topic-7196-replies -->
          <div class="bbp-pagination">
           <div class="bbp-pagination-count">
            查看 15 个帖子 - 1 到 15（总计 21 个）
           </div>
           <div class="bbp-pagination-links">
            <span class="page-numbers current">
             1
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/7196/page/2/">
             2
            </a>
            <a class="next page-numbers" href="http://cos.name/cn/topic/7196/page/2/">
             →
            </a>
           </div>
          </div>
          <div class="bbp-no-reply" id="no-reply-7196">
           <div class="bbp-template-notice">
            <p>
             您必须先登录才能回复该主题。
            </p>
           </div>
          </div>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <div class="comments-area" id="comments">
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget bbp_widget_login" id="bbp_login_widget-2">
         <h3 class="widget-title">
          登录
         </h3>
         <form action="http://cos.name/cn/wp-login.php" class="bbp-login-form" method="post">
          <fieldset>
           <legend>
            登录
           </legend>
           <div class="bbp-username">
            <label for="user_login">
             用户名:
            </label>
           </div>
           <div class="bbp-password">
            <label for="user_pass">
             密码:
            </label>
           </div>
           <div class="bbp-remember-me">
            <label for="rememberme">
             记住用户名
            </label>
           </div>
           <div class="bbp-submit-wrapper">
            <button class="button submit user-submit" id="user-submit" name="user-submit" tabindex="104" type="submit">
             登录
            </button>
           </div>
           <div class="bbp-login-links">
            <a class="bbp-register-link" href="http://cos.name/cn/wp-login.php?action=register" title="注册">
             注册
            </a>
            <a class="bbp-lostpass-link" href="http://cos.name/cn/wp-login.php?action=lostpassword" title="忘记密码">
             忘记密码
            </a>
           </div>
          </fieldset>
         </form>
        </aside>
        <aside class="widget widget_text" id="text-7">
         <h3 class="widget-title">
          搜索
         </h3>
         <div class="textwidget">
          <form action="http://www.google.com/search" id="bbp-search-form" method="get" onsubmit="Gsitesearch(this)" role="search">
           <div>
           </div>
          </form>
          <form id="bbp-search-form-baidu" onsubmit="g(this)" role="search">
           <div>
           </div>
          </form>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          新鲜事
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/cn/topics/">
             最新帖子
            </a>
           </li>
           <li>
            <a href="http://cos.name/cn/view/popular/">
             最热门主题
            </a>
           </li>
           <li>
            <a href="http://cos.name/cn/view/no-replies/">
             消灭零回复
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          RSS订阅
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <img src="http://cos.name/wp-includes/images/rss.png"/>
            <a href="http://cos.name/cn/topics/feed/">
             所有主题
            </a>
           </li>
           <li>
            <img src="http://cos.name/wp-includes/images/rss.png"/>
            <a href="http://cos.name/cn/forums/feed/">
             所有帖子
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
  </div>
 </body>
</html>